From 6d3a6af8edcd21ab82efb1bc98309d2f79e318fc Mon Sep 17 00:00:00 2001 From: "kaf24@firebug.cl.cam.ac.uk" Date: Thu, 9 Feb 2006 16:03:17 +0100 Subject: [PATCH] Make a VTI domain boot again. Signed-off-by Anthony Xu --- xen/arch/ia64/linux-xen/irq_ia64.c | 2 +- xen/arch/ia64/xen/xenirq.c | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/xen/arch/ia64/linux-xen/irq_ia64.c b/xen/arch/ia64/linux-xen/irq_ia64.c index 346de4c167..e5adfa6869 100644 --- a/xen/arch/ia64/linux-xen/irq_ia64.c +++ b/xen/arch/ia64/linux-xen/irq_ia64.c @@ -169,7 +169,7 @@ ia64_handle_irq (ia64_vector vector, struct pt_regs *regs) * handler needs to be able to wait for further keyboard interrupts, which can't * come through until ia64_eoi() has been done. */ - irq_exit(); + xen_irq_exit(regs); } #ifdef CONFIG_HOTPLUG_CPU diff --git a/xen/arch/ia64/xen/xenirq.c b/xen/arch/ia64/xen/xenirq.c index e66b8ac057..283fe40a9f 100644 --- a/xen/arch/ia64/xen/xenirq.c +++ b/xen/arch/ia64/xen/xenirq.c @@ -10,7 +10,6 @@ #include #include - void xen_debug_irq(ia64_vector vector, struct pt_regs *regs) { @@ -60,11 +59,14 @@ xen_do_IRQ(ia64_vector vector) /* * Exit an interrupt context. Process softirqs if needed and possible: */ -void irq_exit(void) +void xen_irq_exit(struct pt_regs *regs) { //account_system_vtime(current); sub_preempt_count(IRQ_EXIT_OFFSET); - if (!in_interrupt() && local_softirq_pending()) { + if((((char *)regs) -(char *) current) != (IA64_STK_OFFSET-IA64_PT_REGS_SIZE)) + return; + + if (!in_interrupt()&&local_softirq_pending()) { add_preempt_count(SOFTIRQ_OFFSET); do_softirq(); sub_preempt_count(SOFTIRQ_OFFSET); -- 2.30.2